<?php
namespace App\Models\Trade\Shop;

use App\Models\Model;

class ShopModel extends Model
{

    const TABLENAME = 'tw_trade_shop';

    /**
     * 认证类型（个人认证）
     */
    const VERIFY_INDIV = 1;

    /**
     * 认证类型（企业认证）
     */
    const VERIFY_ETP = 2;

    /**
     * 状态（正常）
     */
    const STATUS_DEFAULT = 1;

    /**
     * 状态（禁用）
     */
    const STATUS_REMOVE = 2;

    /**
     * 列表排序（最新发布）默认排序
     */
    const ORDER_DEFAULT = 1;

    /**
     * 列表排序（热门降序）
     */
    const ORDER_HOT_DESC = 2;

    /**
     * 列表排序（推荐用户）
     */
    const ORDER_USER_DESC = 3;

    /**
     * 获取排序列表
     *
     * @return array
     */
    public static function getOrderList()
    {
        return [
            self::ORDER_DEFAULT,
            self::ORDER_HOT_DESC,
            self::ORDER_USER_DESC
        ];
    }

    /**
     * 查询一条数据
     *
     * @param int $id
     * @param array $fields
     * @return \Illuminate\Support\Collection
     */
    public static function findById($id, array $fields = [])
    {
        $query = self::dbTable();
        if (count($fields)) {
            $query->select($fields);
        }
        
        return $query->where('id', $id)->get();
    }

    /**
     * 查询一条数据（用户 ID）
     *
     * @param int $userId
     * @param array $fields
     * @return \Illuminate\Support\Collection
     */
    public static function findByUserId($userId, array $fields = [])
    {
        $query = self::dbTable();
        if (count($fields)) {
            $query->select($fields);
        }
        
        return $query->where('user_id', $userId)->get();
    }

    /**
     * 添加一条数据
     *
     * @param array $data            
     * @return id
     */
    public static function addItem(array $data = [])
    {
        $data['created'] = $data['updated'] = time();
        
        return self::dbTable()->insertGetId($data);
    }

    /**
     * 编辑一条数据
     *
     * @param int $id            
     * @param array $data            
     * @return false | 1 | 0
     */
    public static function editItem($id, array $data = [])
    {
        if (! $id) {
            return false;
        }
        $data['updated'] = time();
        
        return self::dbTable()->where('id', $id)->update($data);
    }
}
